home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ham Radio 2000
/
Ham Radio 2000.iso
/
ham2000
/
morse
/
staton
/
globals.txt
< prev
next >
Wrap
Text File
|
1994-04-21
|
7KB
|
370 lines
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;
; COPYRIGHT (C) 1994 KEN STATON ;
; ALL RIGHTS RESERVED ;
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;
;
; MEMORY DEFINITIONS
;
SP_INIT .EQU 50H ; 50H thru 7FH, 48 byte stack.
;
; REGISTER BANKS
;
; BANK 0
R0 .EQU 00H
R1 .EQU 01H
R2 .EQU 02H
R3 .EQU 03H
R4 .EQU 04H
R5 .EQU 05H
R6 .EQU 06H
R7 .EQU 07H
; R0 & R1 FOR INDIRECTION (POINTERS)
;R0 INDEX (GET & MORSE)
;R1 ISR INDEX (PUT)
; R2 - R7 FOR REGISTER OPS
;R2 UNUSED
;R3 IS QFN
;R4 IS MODE
;R5 IS MORSE DELAY # UNITS
;R6 IS DELAY COUNTER STORAGE
;R7 IS MORSE UNIT DELAY COUNTER
; use register bank 1 as temp memory
DBG .EQU 08H
DUR .EQU 09H
RL .EQU 0AH
RH .EQU 0BH
PL .EQU 0CH
PH .EQU 0DH
TMP2 .EQU 0EH
TMP1 .EQU 0FH
; use register bank 2 as temp memory
SP_INDX .EQU 10H
SPSTRT_L .EQU 11H
ADDR_L .EQU 11H
SPSTRT_H .EQU 12H
ADDR_H .EQU 12H
SPSTOP_L .EQU 13H
SPSTOP_H .EQU 14H
BLK_IDX .EQU 15H
QFN .EQU 16H
PREV .EQU 17H
; use register bank 3 as temp memory
CLL .EQU 18H
CLH .EQU 19H
CSL .EQU 1AH
CSH .EQU 1BH
ERRNUM .EQU 1CH
CSPD .EQU 1DH
FSPD .EQU 1EH
COUNT .EQU 1FH
;
; NAMED MEMORY LOCATIONS
;
P0 .EQU 080H
P1 .EQU 090H
P2 .EQU 0A0H
P3 .EQU 0B0H
IEC .EQU 0A8H
IPC .EQU 0B8H
TMOD .EQU 089H
TCON .EQU 088H
TH0 .EQU 08CH
TL0 .EQU 08AH
TH1 .EQU 08DH
TL1 .EQU 08BH
SCON .EQU 098H
SBUF .EQU 099H
PCON .EQU 087H
DPL .EQU 082H
DPH .EQU 083H
SP .EQU 081H
PSW .EQU 0D0H
B .EQU 0F0H
ACC .EQU 0E0H
;
; ERROR NUMBERS
;
;
; BIT FLAG DEFINITIONS.
; BIT ADDRESSABLE from 20H thru 2FH, 16 bytes/128 bits
; **AVAILABLE** AS BIT ADDRESSABLE:
; 20H - 23H, 4 bytes = 32 bits
;
RXD_FLAG .EQU 00H
RX_OVFL .EQU 01H
REPLY .EQU 02H
ERR_FLAG .EQU 03H
SPEAK .EQU 04H
CODE .EQU 05H
GL .EQU 06H
GN .EQU 07H
GP .EQU 08H
GS .EQU 09H
;
;
; .EQU 031H ; Last bit addressable this allocation
DLY_B4 .EQU 024H
DLY_AR .EQU 025H
; **AVAILABLE** AS BYTES:
; 26H - 4FH UNUSED
;
; DIRECT ADDRESS DEFINITIONS FOR SFR
;
A_ADDR .EQU 0E0H
B_ADDR .EQU 0F0H
;
; CONTROL CHARACTER DEFINITIONS
;
LF .EQU 0AH
CR .EQU 0DH
TAB .EQU 09H
BS .EQU 08H
CTLD .EQU 04H
SPC .EQU ' '
DN .EQU '/'
;
; TIMEOUT DEFINITIONS
;
;
; PORT DEFINITIONS
;
; bit defs
ACC7 .EQU ACC+7
ACC6 .EQU ACC+6
ACC5 .EQU ACC+5
ACC4 .EQU ACC+4
ACC3 .EQU ACC+3
ACC2 .EQU ACC+2
ACC1 .EQU ACC+1
ACC0 .EQU ACC+0
LED .EQU P3+7
SPK .EQU P1+7
KEY .EQU P3+2
IEC0 .EQU IEC+0
IEC4 .EQU IEC+4
INT_EN .EQU IEC+7
TI .EQU SCON+1
RI .EQU SCON+0
P3B0 .EQU P3+0
P3B1 .EQU P3+1
P3B2 .EQU P3+2
P3B3 .EQU P3+3
P3B4 .EQU P3+4
P3B5 .EQU P3+5
P3B6 .EQU P3+6
P3B7 .EQU P3+7
P1B0 .EQU P1+0
P1B1 .EQU P1+1
P1B2 .EQU P1+2
P1B3 .EQU P1+3
P1B4 .EQU P1+4
P1B5 .EQU P1+5
P1B6 .EQU P1+6
P1B7 .EQU P1+7
;
; CONSTANTS
;
TRUE .EQU 1
FALSE .EQU 0
YES .EQU 1
NO .EQU 0
;
; The following indexes are used in the spoken menu
; and for subset membership checks...
;
IDX_A .EQU 0
IDX_B .EQU 1
IDX_C .EQU 2
IDX_D .EQU 3
IDX_E .EQU 4
IDX_F .EQU 5
IDX_G .EQU 6
IDX_H .EQU 7
IDX_I .EQU 8
IDX_J .EQU 9
IDX_K .EQU 10
IDX_L .EQU 11
IDX_M .EQU 12
IDX_N .EQU 13
IDX_O .EQU 14
IDX_P .EQU 15
IDX_Q .EQU 16
IDX_R .EQU 17
IDX_S .EQU 18
IDX_T .EQU 19
IDX_U .EQU 20
IDX_V .EQU 21
IDX_W .EQU 22
IDX_X .EQU 23
IDX_Y .EQU 24
IDX_Z .EQU 25
IDX_1 .EQU 26
IDX_2 .EQU 27
IDX_3 .EQU 28
IDX_4 .EQU 29
IDX_5 .EQU 30
IDX_6 .EQU 31
IDX_7 .EQU 32
IDX_8 .EQU 33
IDX_9 .EQU 34
IDX_0 .EQU 35
IDX_PER .EQU 36
IDX_COM .EQU 37
IDX_QM .EQU 38
IDX_DN .EQU 39
IDX_SK .EQU 40
IDX_BT .EQU 41
IDX_AR .EQU 42
IDX_KN .EQU 43 ; NOT part of test
SETSIZE .EQU 43 ; excludes KN, since counts from 0
PA1 .EQU 0FEH ; 0FEH is 1mS pause
PA10 .EQU 0FDH ; 0FDH is 10mS pause
PA100 .EQU 0FCH ; 0FCH is 100mS pause
PA300 .EQU 0FBH ; 0FBH is 300mS pause
PA500 .EQU 0FAH ; 0FAH is 500mS pause
QSECDLY .EQU 250 ; 250 * 1mS
;
; 6.0 MHz parameters...
;
ONE_MS .EQU 250 ; 24 cycle instruction loop at 6Mhz = 4 uS
; 4 uS * 250 = 1.0 mS
EIGTH_MS .EQU 31 ; 4 uS * 31 = 124 uS = 1/8 mS
; less 1 for moves
SP_DLY .EQU 6 ; empirically set
;
; 5 wpm = 240mS/dit, 13 wpm = 92mS/dit, 20 wpm = 60mS/dit
; 16 wpm = 75mS/dit, 18 wpm = 67mS/dit, 23 wpm = 52mS/dit
;
; The following durations are for dits (elements) in mS.
; Note that at 500Hz, one cycle is 2mS, so these numbers are
; divided by 2 before they are used to generate tone.
;
WPM5 .EQU 240
WPM13 .EQU 92
WPM16 .EQU 75
WPM18 .EQU 68
WPM20 .EQU 60
WPM23 .EQU 52
;
; The following durations are for cspd delays in word
; and character delays. They are in mS, but must be
; divided by 2 for the delay counter, since the input
; is limited to 255 mS.
;
WPM2 .EQU 509 ; mS / 2 = 254
WPM9 .EQU 132 ; mS / 2 = 66
WMP16 .EQU 75 ; mS / 2 = 37
;
; The following durations are for speech delays
; DB -> delay before
; DA -> delay after
; in 4 mS units
;
WPM5DB .EQU 125 ; 0.5 sec
WPM5DA .EQU 62 ; 0.25 sec
WPM13DB .EQU 100 ; 0.4 sec
WPM13DA .EQU 50 ; 0.2 sec
WPM20DB .EQU 75 ; 0.3 sec
WPM20DA .EQU 37 ; 0.15 sec
;
;
HALFBLK .EQU 32 ; MUST MATCH BLK_SIZE DEFINED IN ADPCM
DC .EQU 80H ; DAC MID-POINT = DC
ABS_DC .EQU 128
REL_DC .EQU 0
DEBOUNCE .EQU 250 ; 6uS * 50 = 1.5mS
NUL .EQU 0
EXIT .EQU 0
RAN .EQU 1
SEQ .EQU 2
GRP .EQU 3
TALK_DLY .EQU 20
;SINE_TBL
; Values & offset divided by 2 to reduce tone volume
;
S0 .EQU (128/2)+(128/2)
S1 .EQU (177/2)+(128/2)
S2 .EQU (218/2)+(128/2)
S3 .EQU (245/2)+(128/2)
S4 .EQU (255/2)+(128/2)
S5 .EQU (245/2)+(128/2)
S6 .EQU (218/2)+(128/2)
S7 .EQU (177/2)+(128/2)
S8 .EQU (128/2)+(128/2)
S9 .EQU (79/2)+(128/2)
S10 .EQU (38/2)+(128/2)
S11 .EQU (11/2)+(128/2)
S12 .EQU (1/2)+(128/2)
S13 .EQU (11/2)+(128/2)
S14 .EQU (38/2)+(128/2)
S15 .EQU (79/2)+(128/2)
S16 .EQU (128/2)+(128/2)
S_END .EQU 0 ;TERMINATOR